Vengeance r2
A Quake Engine Project
by Entar
http://entar.quakedev.com
						
based on QMB	
by DrLabman


-----------------------------				
Overview						
-----------------------------

Vengeance r2 is the next revision of my old engine project Vengeance.
I call this engine Vengeance r2 because I've switched code bases. I'm now
using QMB, because it had a lot of features my older engine attempted (and failed)
to have (md3 models, png textures, etc) and my old engine had a lot features QMB had
(QMB particles, QMB shiny textures, QMB caustics, QMB detail textures, etc).  I am,
however, making many changes to improve on and make my engine competitive with QMB and
other engines.

-----------------------------
Contact Info
-----------------------------

Entar (entar99 AT hotmail DOT com)
http://entar.quakedev.com

-----------------------------
Copyright
-----------------------------

This program is distributed under the GNU GPL.
This material may be modified and distributed under GPL
with proper credit given to the creator.  Proprietary content from id
Software or other individuals is still protected under applicable law.

-----------------------------
Disclaimer
-----------------------------

I accept no responsibility if this file or program in any way causes influenza, 
causes sudden mood changes, or blows up your computer.
There is no warranty expressed or implied.

This project requires the registered version of Quake.  It can be found for 
under $12 in numerous places.  Support the developers who have put their 
effort into this game you love so much.

-----------------------------				
Features						
-----------------------------			

- Improved/Scriptable Particle system
- Lighting on smoke and blood particles
- Reflective water
- Textured fire particles
- Half-Life BSP support
- Mouse-based menus
- Alternate hudstyle option
- Vertex Arrays on model drawing
- Alpha Channels
- Enhanced Tab Completion
- Directional Lighting
- Bullet, explosion, lightning and misc decals
- Automatic Water Transparency
- Interpolated Lightstyles
- Adjustable vertex shading
- Skyboxes
- Underwater view warping
- Dynamic Crosshair
- New QC stuff, including extensions, MOVETYPE_BOUNCEMISSILE, SOLID_CORPSE, and .alpha support
- Chase_active 2 (custom chase mode)
- Hardcoded Particle Textures
- Centerprint fadeout
- New server cvars (sv_gamespeed, sv_freezenonclients, etc)
- Blood and bullet decals
- Splash screen
- Texture script system
- Model script system
- Better Light Blooms
- Support for new entity effects (EF_RED, EF_BLUE, EF_NODEPTHTEST, EF_NODRAW, EF_ADDITIVE, etc)
- Motion blur
- Shadows from md3's
- Binoculars
- Additional developer support (dev_findradius cvar, qcexec <command> command, expanded r_speeds info, etc)
- Idle gun movement
- New QC Particle Extensions
- Console Game
- Color/Brightness adjustment cvars
- Contrast cvar
- New menu messages
- Cvarlist and Cmdlist commands
- Lots of bugfixes
- Anything else I forgot I added

And anything QMB v1.18 had.

----------------------------
New CVARS
----------------------------

* gl_farclip - adjusts distance of farclip and skybox distance (default: 4096)
* r_dirlighting (0/1) - toggles directional vertex lighting on models
* r_waterrefl (0/1) - toggles reflective water
* v_hurtblur (0/1) - toggles hurtblur effect
* v_gunmove - changes the speed of the idle gun movement (off if 0)
* hud (0/1/2/3/4) - toggles hud. O-3 changes how much of the hud shows up (0 = none, 3 = all); 4 toggles alternate full hud
* r_bloom (0/1) - toggles light blooms
* r_bloom_intensity (0-5) - adjusts intensity of light blooms
* r_bloom_darken (0-40) - darkens the light blooms, basically changes sensitivity
* r_part_lighting (0/1) - toggles lighting on particles
* sv_gamespeed (anywhere from 0.01 to 5) - changes gamespeed on server
* v_color_red (anywhere from 0-4) - red setting on color adjustments
* v_color_green (anywhere from 0-4) - green setting on color adjustments
* v_color_blue (anywhere from 0-4) - blue setting on color adjustments
* v_color_percent (anywhere from 0-100) - power setting on color adjustments
* v_psycho (0/1) - toggles psycho colors mode
* r_waterwarp (anywhere from 0-1) - changes amount of underwater screen warping (0 = off)
* dev_findradius (0/1) - toggles findradius indications (developer 1 mode only)
* chase_active (0/1/2) - chase_active 2 activates custom chasecam mode
  * chase_pitch (anywhere from -180 to 180) - changes camera angle[pitch]
  * chase_roll (anywhere from -180 to 180) - changes camera angle[roll]
  * chase_yaw (anywhree from -180 to 180) - camera angle[yaw], relative to player angle[yaw]
* r_decaltime (0-...) - adjusts how long decals stick around; 0 turns decals off.
  * r_decal_bullets (0/1) - toggles bullet decals
  * r_decal_misc (0/1) - toggles misc decals (wizard spike hits, etc)
  * r_decal_explosions (0/1) - toggles explosion decals
  * r_decal_blood (0/1) - toggles blood decals
* r_part_scripts (0/1) - toggles use of scripts on original TE_* effects
* sv_cheats (0/1) - toggles cheats on a server
* ed_printerrors (0/1) - toggles printing of edict errors on map load (useful for loading hlmaps)
* ed_printtextures (0/1) - toggles printing of all the textures used in a map

============================
New Extensions
============================
- TE_SPARK (#51) - [vector] origin [vector] dir [byte] count
- TE_EXPLOSIONRGB (#53) - [vector] origin [byte] red [byte] green [byte] blue
- TE_PARTICLERAIN (#55) - [vector] min [vector] max [vector] dir [short] count [byte] color
- TE_GUNSHOTQUAD (#57) - just like a regular gunshot, only bigger and better
- TE_SPIKEQUAD (#58) - just like a regular spike hit, only better
- TE_SUPERSPIKEQUAD (#59) - just like a regular super spike hit, only better
- TE_EXPLOSIONQUAD (#70) - just like a regular explosion, only bigger
- TE_PLASMABURN (#75) - just like a gunshot, but with a cool plasma-ish particle effect
- TE_VEN_WATERSPLASH (#125) - just like a gunshot; made for MauveBib's water splash qc code
- TE_VEN_EVENTSPLASH (#126) - use just like a gunshot; made for events like a flag capture or something
- TE_VEN_EXPLOSIONCUSTOM (#127) - [vector] origin [byte] red [byte] green [byte] blue [short] size

============================
Model Script system
============================
The model script system, at this point, has -5- flags.  They are rotateFlag,
noMD3shadowFlag, quadshellflag, fullbrightflag.  Here are some examples of use in the
venr2model.shader file:

rotateFlag=armo*,g_*; - this would make all models that have 'armo' or 'g_' in the 
name rotate.  This flag is there because md3's do not have the proper flags that mdl's do.

noMD3shadowflag=gib*; - this makes any model that has 'gib' in the name not cast a shadow.
This only applies to md3's at this point, because Vengeance r2 does not yet have alias
shadows on mdl models, only md3.

quadshellflag=quad*; - this makes any model that has 'quad' in the name get the shell
that shows up on weapons when you get a Quad damage.  This has an interesting
feature/artifact, however.  On models that animate or otherwise move, the shell fades
on and off.

fullbrightflag=flame*; - this should make any model that has 'flame' in the name be
theoretically unaffected by lighting from lightmaps.

fireflag=flame*; - this makes any model that has 'flame' in the name be on fire.

noshadeflag=flame*; - this makes any model that has 'flame' in the name exempt from
vertex shading effects.

===========================
Texture Script System
===========================
The texture script system, controlled by venr2tex.shader in the vr2 directory,
allows developers to change certain textures to create interesting effects.  Syntax
is the same as in the model script system.  The available flags are as follows:

alphaChannel=comp*; - this would make all textures that have 'comp' in the name
check for and use alpha channels.  All other textures are displayed normally.

NoAlphaChannel=comp1; - this would remove 'comp1' from the textures that are affected
by alpha channels; this is good for exceptions with wildcards.

Caustics=stone*; - this would make all textures with 'stone' in the name display the
underwater caustics effect, regardless of whether they are underwater or not.  This
can be used for many interesting effects, like rooms where there is a pool of water, with
lighting effects on the walls.

============================
Vr2 related links
============================
Wish/Todo List: http://entar.quakedev.com/todo.txt
Screenshot browsing: http://entar.quakedev.com/screenshots/
Please report bugs: http://www.quakedev.com/forums/index.php?board=38.0

============================
Be aware of
============================

- Scriptable particle system
.	Paramaters:
	  Set these paramaters to create your new particle effect.  Remember, you may call
	  more than one script section from the QC at a time, or use the extra paramater.
		* type: what type of particles [p_fire, p_fire2, p_sparks, p_smoke, p_bubble, p_blood, p_chunks]
		* color0, color1, color2 (or red, green, blue): color values (0-1)
		* size: size of the particles
		* time: how long the particle lasts
		* count: how many particles to spawn
		* decalsize: the size of the decal (no decal spawned if 0)
		* decalcolor0, decalcolor1, decalcolor2: red, green, blue, decal color values (0-1)
		* velocity0, velocity1, velocity2: x, y, z parameters for velocity (setting of 1, 1, 1 is zerodir)
		* gravity: gravity multiplier - 1 = normal gravity, 0 = no gravity, -1 = reverse gravity, etc
		* trail: what type of particle trail your particles have (same paramater choices as type)
		* trailsize: the trail particles' size
		* trailtime: how long the particles of the trail last
		* trailextra: if defined, will call a particle script as trail *INSTEAD* of normal trail
		* extra: if defined, the engine calls the script defined here
		* growrate: rate of growth of a particle (0 = none, negative numbers cause shrinking)
		* rotation: how far rotated the particle begins
		* rotation_speed: how fast the particle rotates
.	Modifiers:
	  When using a modifier, set a decimal value (e.g. randtime=0.35) and the engine
	  will treat the decimal as a percent (35%), and do a randomize on the time value
	  (e.g. time=0.71, now time=random, anywhere between 0.4615 and 0.9585).
	  Exception: randcolor and randchangevel- just set to 1 for a random color/newvel.
		* randcolor: sets the particle(s) to a random color
		* randsize: sets the particle(s) to a random size around the size paramater.
		* randvel: gives the particle(s) a random velocity, around the velocity paramaters.
		* randtime: gives the particle(s) a random time until death, around the time paramater.
		* randchangevel: gives the particle(s) a random velocity.
		* randrotatespeed: gies the particle(s) a random rotation speed, around the rotation_speed paramater.
.	Special Script Names:
	 If you name a particle script as certain names, you can affect certain
	 otherwise unchangeable particle effects.
		* progs/modelname.mdl: If you set a script's name to the path/name
		  of a model, the particle effect you create in that script will be attached
		  to every instance of that model, just like a particle trail.
		* TE_*: To change the effect created by a certain TE_* effect, just create
		  a script section with the name set to the TE_* effect you want to change.
		* RocketTrail: This will change the rocket trail that is normally added
		  to rockets.
		* GrenadeTrail, BloodTrail, BloodTrail2, ScragTrail, HKnightTrail,
		  VoreTrail: similar to RocketTrail, only on different particle trails.

- chase_active 2: custom chasecam mode (mostly for taking classy screenshots, or maybe making
a sidescroller?). chase_roll and chase_pitch only work in chase_active 2.

- chase_active 3: custom chasecam mode, only the values are in relation the player's angle.

- Vengeance r2 is primarily made in/for a single player environment.  It does support
multiplayer as well as it can, however.  Just don't try +connect <server> in the console.

- BLOOMS: All bugs in the 4-28-05 beta are fixed.

- menu_server: If you enter 'menu_server' (minus the apostrophes) in the console, a small
server menu will appear.  The sliders don't move correctly, but the values will change
normally with left and right arrow keys.  ESC will put you in the options menu.

- console_game: Just type it in the console, and have fun.